/**
 * router.js处理路由
 * 根据不同的请求路由对应的处理函数
 */
let express = require('express');
let Students = require('./student.js');

// Express 提供了更好的方式，专门用来包装路由文件
// 创建一个路由容器，把路由都挂载到路由容器中
let router = express.Router();

router.get('/students', function (req, res) {
  // readFile 的第二个参数是可选的,加入UTF8 是自动转为UTF8编码
  // fs.readFile('./db.json', 'utf8', function (err ,data) {
  //   if (err) {
  //     return res.status(500).send('Server error.'); // 加入状态码,代表服务器错误
  //   }
  //   res.render('index.html', {
  //     apples: [
  //       'Cyan',
  //       'Aqing',
  //       'CyanAqing',
  //       'AqingCyan'
  //     ],
  //     students: JSON.parse(data).students // JSON格式字符串记得转为对象
  //   });
  // });

  // 我们把处理文件的方法抽离成一个模块，调用模块即可
  Students.find(function (err, students) {
    if (err) {
      return res.status(500).send('Server error.'); // 加入状态码,代表服务器错误
    }
    res.render('index.html', {
      apples: [
        'Cyan',
        'Aqing',
        'CyanAqing',
        'AqingCyan'
      ],
      students: students
    });
  });
});

router.get('/students/new', function (req, res) {
  res.render('new.html');
});

router.post('/students/new', function (req, res) {
  // 获取表单数据，处理（将数据保存到db中），发送响应（重定向到首页）
  console.log(req.body);
  Students.save(req.body, function (err) {
    if (err) {
      return res.status(500).send('Server error.');
    }
    res.redirect('/students');
  })
});

router.get('/students/edit', function (req, res) {
  // 在客户端的列表页中处理链接问题（需要有id参数）
  // 获取要编辑的学生id
  // 渲染编辑页面: 根据id把学生信息查出来，模板引擎渲染页面
  // console.log(req.query);
  Students.findById(parseInt(req.query.id), function (err, student) {
    if (err) {
      return res.status(500).send('Server error.');
    }
    // console.log(student);
    res.render('edit.html', {
      student: student
    })
  })
});

router.post('/students/edit', function (req, res) {
  // 获取表单数据用来更新： req.body
  // 更新: Student.update()
  // 发送响应
  console.log(req.body);
  Students.updateById(req.body, function (err) {
    if (err) {
      return res.status(500).send('Server error.');
    }
    res.redirect('/students');
  })
});

router.get('/students/delete', function (req, res) {
  // 获取要删除的id
  // 根据id执行删除操作
  // 根据操作结果发送响应数据
  Students.delete(req.query.id, function (err) {
    if (err) {
      return res.status(500).send('Server error.');
    }
    res.redirect('/students')
  })
});

// 把router导出
module.exports = router;


// 把路由作为方法暴露到入口文件，把Express对象作为参数执行，来起到路由模块管理的作用
// module.exports = function (app) {
//   app.get('/students', function (req, res) {
//     // readFile 的第二个参数是可选的,加入UTF8 是自动转为UTF8编码
//     fs.readFile('./db.json', 'utf8', function (err ,data) {
//       if (err) {
//         return res.status(500).send('Server error.'); // 加入状态码,代表服务器错误
//       }
//       res.render('index.html', {
//         apples: [
//           'Cyan',
//           'Aqing',
//           'CyanAqing',
//           'AqingCyan'
//         ],
//         students: JSON.parse(data).students // JSON格式字符串记得转为对象
//       });
//     });
//   });
//
//   app.get('/students/new', function (req, res) {
//
//   });
//
// };
